#pragma once

#include "topdbs_base_connection.hpp"
#include "topdbs_base_session.hpp"
#include "topdbs_factory.hpp"

namespace topdbs
{
	topdbs_factory* createFacotry(eDBSClient_t dbsClient);

	class topdbs_infromix_factory : public topdbs_factory
	{
	public:
		virtual topdbs_base_connection* CreateConnection() override;
		virtual topdbs_base_session*    CreateSession(topdbs_base_connection* pConnection) override;
	};

	class topdbs_sqlite_factory : public topdbs_factory
	{
	public:
		virtual topdbs_base_connection* CreateConnection() override;
		virtual topdbs_base_session*    CreateSession(topdbs_base_connection* pConnection) override;
	};

	class topdbs_mysql_factory : public topdbs_factory
	{
	public:
		virtual topdbs_base_connection* CreateConnection() override;
		virtual topdbs_base_session*    CreateSession(topdbs_base_connection* pConnection) override;
	};

	class topdbs_oracle_factory : public topdbs_factory
	{
	public:
		virtual topdbs_base_connection* CreateConnection() override;
		virtual topdbs_base_session*    CreateSession(topdbs_base_connection* pConnection) override;
	};

	class topdbs_pqxx_factory : public topdbs_factory
	{
	public:
		virtual topdbs_base_connection* CreateConnection() override;
		virtual topdbs_base_session*    CreateSession(topdbs_base_connection* pConnection) override;
	};

	class topdbs_odbc_factory : public topdbs_factory
	{
	public:
		virtual topdbs_base_connection* CreateConnection() override;
		virtual topdbs_base_session*    CreateSession(topdbs_base_connection* pConnection) override;
	};	
}




